#ifndef __APP_DEVICE_H__
#define __APP_DEVICE_H__
#include "app_buffer.h"
#include <pthread.h>

// #define DEVICE_FILENAME "/dev/ttyS1" // 设备文件名
#define DEVICE_FILENAME "/home/wx/test/dev_file_test.txt" // 设备文件名

// 设备结构体
typedef struct
{
    int coon_type;                 // 连接类型
    char *dev_filename;            // 设备文件地址
    int dev_fd;                    // 设备文件的文件描述符
    app_buffer_t *up_buffer;       // 上行缓冲区
    app_buffer_t *down_buffer;     // 下行缓冲区
    pthread_t read_pthread;        // 读取线程
    int (*post_read)(char *, int); // 读后预处理
    int (*pre_write)(char *, int); // 写前预处理
} app_device_t;

/**
 * @brief  初始化设备模块
 * @return 设备模块结构体
 */
app_device_t *app_device_init(void);

/**
 * @brief  设备启动
 * 1.创建读取线程(启动上行通路)
 * 2.向mqtt注册接收数据的回调函数(启动下行通路)
 */
void app_decive_start();

/**
 * @brief  设备销毁
 *
 */
void app_device_destroy(app_device_t *app_device);

#endif /* __APP_DEVICE_H__ */